home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Demos / Bowers Development / AppMaker 2.0b5 / Examples / PowerPlant / Gadgets / CTabbedPanel.cp < prev    next >
Text File  |  1996-03-19  |  3KB  |  177 lines

  1. // CTabbedPanel.cp -- window methods
  2. // Created 3/19/96 12:49 PM by AppMaker
  3.  
  4. #include "CTabbedPanel.h"
  5.  
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <CTabPanel.h>
  10. #include "CGadgetsData.h"
  11. #include "CmdCodes.h"
  12.  
  13. #define PPob_TabbedPanelID    201
  14. #define RidL_TabbedPanelID    201
  15.  
  16. Boolean        CTabbedPanel::sIsRegistered = false;
  17.  
  18. //----------
  19. void
  20. CTabbedPanel::RegisterClass ()
  21. {
  22.     URegistrar::RegisterClass ('Tabl', (ClassCreatorFunc)CTabbedPanel::CreateTabbedPanelStream);
  23.  
  24.     // register the pane classes we use
  25.     CTabPanel::RegisterClass ();
  26.  
  27.     sIsRegistered = true;
  28. }
  29.  
  30. //----------
  31. CTabbedPanel*
  32. CTabbedPanel::CreateTabbedPanel(
  33.     LCommander            *inSuperCommander,
  34.     CGadgetsData        *inData)
  35. {
  36.     if (!sIsRegistered) {
  37.         RegisterClass ();
  38.     }
  39.  
  40.     CTabbedPanel        *window;
  41.  
  42.     window = (CTabbedPanel *)LWindow::CreateWindow(PPob_TabbedPanelID, inSuperCommander);
  43.     window->ConnectToData (inData);
  44.  
  45.     return window;
  46. }
  47.  
  48. //----------
  49. //    This is the function you register with URegistrar to create a
  50. //    CTabbedPanel from a resource
  51.  
  52. CTabbedPanel*
  53. CTabbedPanel::CreateTabbedPanelStream(
  54.     LStream    *inStream)
  55. {
  56.     return (new CTabbedPanel(inStream));
  57. }
  58.  
  59. //----------
  60. CTabbedPanel::CTabbedPanel()
  61. {
  62. }
  63.  
  64. //----------
  65. CTabbedPanel::CTabbedPanel(
  66.     LStream    *inStream)
  67.         : LWindow(inStream)
  68. {
  69. }
  70.  
  71. //----------
  72. CTabbedPanel::~CTabbedPanel()
  73. {
  74. }
  75.  
  76. //----------
  77. //    This member function gets called once the containment hierarchy that contains
  78. //    this pane has been built. It gives us a chance to get data members for
  79. //    interesting subviews, and to do other operations now that our subviews exist.
  80. void
  81. CTabbedPanel::FinishCreateSelf()
  82. {
  83.     mTabPanelPanel = (CTabPanel *)FindPaneByID ('Tabl');
  84.  
  85.     UReanimator::LinkListenerToControls(this, this, RidL_TabbedPanelID);
  86.         // the purpose is to "connect" self to whatever controls
  87.         // that we want to "listen" to
  88.  
  89. // any additional initialization for your window:
  90.  
  91. }
  92.  
  93. //----------
  94. void
  95. CTabbedPanel::ConnectToData    (CGadgetsData        *inData)
  96. {
  97.     mData = inData;
  98.     inData->AddListener (this);
  99. }
  100.  
  101. //----------
  102. void
  103. CTabbedPanel::ListenToMessage(
  104.     MessageT    inMessage,
  105.     void        *ioParam)
  106. {
  107.     switch (inMessage) {
  108.  
  109.     default:
  110.         break;
  111.     }
  112. }
  113.  
  114. //----------
  115. Boolean
  116. CTabbedPanel::ObeyCommand(
  117.     CommandT    inCommand,
  118.     void        *ioParam)
  119. {
  120.     Boolean        cmdHandled = true;
  121.  
  122.     switch (inCommand) {
  123.  
  124.     // +++ Add cases here for the commands you handle
  125.     //        Remember to add same cases to FindCommandStatus below
  126.     //        to enable/disable the commands
  127.  
  128.     default:
  129.             cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
  130.         break;
  131.     }
  132.  
  133.     return cmdHandled;
  134. }
  135.  
  136. //----------
  137. void
  138. CTabbedPanel::FindCommandStatus(
  139.     CommandT    inCommand,
  140.     Boolean        &outEnabled,
  141.     Boolean        &outUsesMark,
  142.     Char16        &outMark,
  143.     Str255        outName)
  144. {
  145.     outUsesMark = false;
  146.  
  147.     switch (inCommand) {
  148.  
  149.     // +++ Add cases here for the commands you handle
  150.  
  151.     default:
  152.             LWindow::FindCommandStatus(inCommand, outEnabled,
  153.                                         outUsesMark, outMark, outName);
  154.         break;
  155.     }
  156. }
  157.  
  158. //----------
  159. Boolean
  160. CTabbedPanel::FocusDraw()
  161. {
  162.     Boolean        focused = LView::FocusDraw();
  163.  
  164.     if (focused) {
  165.         AuxWinHandle    awHndl;
  166.         CTabHandle        awCTable;
  167.         ColorSpec        contentSpec;
  168.  
  169.         GetAuxWin(GetMacPort(), &awHndl);
  170.         awCTable = (**awHndl).awCTable;
  171.         contentSpec = (**awCTable).ctTable [wContentColor];        // should search vs. index
  172.         ::RGBBackColor(&contentSpec.rgb);
  173.     }
  174.  
  175.     return focused;
  176. }
  177.